package com.sgcc.operate.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sgcc.operate.domain.OActiApply;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sgcc.operate.mapper.OActiTemplateMapper;
import com.sgcc.operate.domain.OActiTemplate;
import com.sgcc.operate.service.IOActiTemplateService;

/**
 * 活动模板Service业务层处理
 * 
 * @author sgcc
 * @date 2021-03-31
 */
@Service
public class OActiTemplateServiceImpl implements IOActiTemplateService 
{
    @Autowired
    private OActiTemplateMapper oActiTemplateMapper;

    /**
     * 查询活动模板
     * 
     * @param id 活动模板ID
     * @return 活动模板
     */
    @Override
    public OActiTemplate selectOActiTemplateById(String id)
    {
        return oActiTemplateMapper.selectOActiTemplateById(id);
    }

    /**
     * 查询活动模板列表
     * 
     * @param oActiTemplate 活动模板
     * @return 活动模板
     */
    @Override
    public List<OActiTemplate> selectOActiTemplateList(OActiTemplate oActiTemplate)
    {
        return oActiTemplateMapper.selectOActiTemplateList(oActiTemplate);
    }

    /**
     * 新增活动模板
     * 
     * @param oActiTemplate 活动模板
     * @return 结果
     */
    @Override
    public int insertOActiTemplate(OActiTemplate oActiTemplate)
    {
        return oActiTemplateMapper.insertOActiTemplate(oActiTemplate);
    }

    /**
     * 修改活动模板
     * 
     * @param oActiTemplate 活动模板
     * @return 结果
     */
    @Override
    public int updateOActiTemplate(OActiTemplate oActiTemplate)
    {
        return oActiTemplateMapper.updateOActiTemplate(oActiTemplate);
    }

    /**
     * 批量删除活动模板
     * 
     * @param ids 需要删除的活动模板ID
     * @return 结果
     */
    @Override
    public int deleteOActiTemplateByIds(String[] ids)
    {
        return oActiTemplateMapper.deleteOActiTemplateByIds(ids);
    }

    /**
     * 删除活动模板信息
     * 
     * @param id 活动模板ID
     * @return 结果
     */
    @Override
    public int deleteOActiTemplateById(String id)
    {
        return oActiTemplateMapper.deleteOActiTemplateById(id);
    }

    @Override
    public Map<String, Object> preview(OActiApply oActiApply) {
//        String tempId = oActiApply.getTempId();
//        String actiId = oActiApply.getActiId();
//        Map<String, String> modifyContent = new HashMap<String, String>();
//        modifyContent.put("%tempId", tempId);
//        // 初始化02其他图片
//        for (String otherId: Global.OTHER_PIC_ID) {
//            modifyContent.put("%" + otherId, "''");
//        }
//        Map<String, Object> result = new HashMap<String, Object>();
//        List<OActiPicConfig> picConfigs = new ArrayList<OActiPicConfig>();
//        // 服务器
//        String root = request.getServletContext().getRealPath("");
//        // 本地
////        String root = "D:/ideaworkspace/csopen/src/csopen/src/main/webapp";
//        // 预览图片
//        String picPath = root + "/static/acti/temp/pic/preview/" + tempId + "/" + actiId;
//        File picRoot = new File(picPath);
//        File[] picDirs = picRoot.listFiles();
//        String imgHtmlModel = "<img src=\"%src\" id=\"%id\" style=\"display:none;\" />";
//        StringBuilder prizeSb = new StringBuilder();
//        // 获取奖品信息
//        OActiInfo info = new OActiInfo(actiId);
//        List<OPrizeCost> prizeList = oPrizeCostMapper.findList(new OPrizeCost(info));
//        // 增加谢谢参与奖项
//        OPrizeCost oPrizeCost = new OPrizeCost();
//        oPrizeCost.setPrizeid("01_99");
//        oPrizeCost.setPrizename("谢谢参与");
//        prizeList.add(oPrizeCost);
//        if (null != picDirs) {
//            for (File picDir : picDirs) {
//                if (!picDir.isDirectory()) {
//                    continue;
//                }
//                if (Global.PIC_TYPE_PRIZE.equals(picDir.getName())) { // 奖品
//                    // 新增奖品id文件夹
//                    File[] prizeDirs = picDir.listFiles();
//                    if (null == prizeDirs) {
//                        continue;
//                    }
//                    for (File prizeDir : prizeDirs) {
//                        if (!prizeDir.isDirectory()) {
//                            continue;
//                        }
//                        for (OPrizeCost prize : prizeList) {
//                            if (prizeDir.getName().equals(prize.getId())) {
//                                prize.setHaveImg(true);
//                                break;
//                            }
//                        }
//                        // 多个也只取一个
//                        File[] pics = prizeDir.listFiles();
//                        if (null == pics) {
//                            continue;
//                        }
//                        File pic = pics[0];
//                        String src = "/csopen/static/acti/temp/pic/preview/" + tempId + "/" + actiId + "/" + picDir.getName() + "/" + prizeDir.getName() + "/" + pic.getName();
//                        prizeSb.append(
//                                imgHtmlModel.replaceAll("%id", prizeDir.getName()).replaceAll("%src", src)
//                        ).append("\r\n");
//                        // 保存图片信息
//                        OActiPicConfig config = new OActiPicConfig(UUID.randomUUID().toString().replaceAll("-", ""));
//                        config.setPicName(pic.getName().split("\\.")[0]);
//                        config.setPicPath(src);
//                        config.setSuggest("60 * 60");
//                        picConfigs.add(config);
//                    }
//                } else if (Global.PIC_TYPE_OTHER.equals(picDir.getName())) { // 其他
//                    File[] otherDirs = picDir.listFiles();
//                    if (null == otherDirs) {
//                        continue;
//                    }
//                    for (String otherId : Global.OTHER_PIC_ID) {
//                        modifyContent.put("%" + otherId, "''");
//                        for (File other : otherDirs) {
//                            String name = other.getName().split("\\.")[0];
//                            if (otherId.equals(name)) {
//                                modifyContent.put(
//                                        "%" + otherId,
//                                        "'/csopen/static/acti/temp/pic/preview/" + tempId + "/" + actiId + "/" + picDir.getName() + "/" + other.getName() + "'"
//                                );
//                                // 保存图片信息
//                                OActiPicConfig config = new OActiPicConfig(UUID.randomUUID().toString().replaceAll("-", ""));
//                                config.setPicName(other.getName().split("\\.")[0]);
//                                config.setPicPath("/csopen/static/acti/temp/pic/preview/" + tempId + "/" + actiId + "/" + picDir.getName() + "/" + other.getName());
//                                config.setSuggest("128 * 128");
//                                picConfigs.add(config);
//                                break;
//                            }
//                        }
//
//                    }
//                }
//            }
//        }
//        modifyContent.put("%img", prizeSb.toString());
//        StringBuilder prizeNameSb = new StringBuilder("[");
//        for (int i = 0; i < prizeList.size(); i ++) {
//            if (prizeList.get(i).isHaveImg()) {
//                prizeNameSb
//                        .append("{'name': '").append(prizeList.get(i).getPrizename())
//                        .append("', 'id': '").append(prizeList.get(i).getId())
//                        .append("'}");
//            } else {
//                prizeNameSb
//                        .append("{'name': '").append(prizeList.get(i).getPrizename())
//                        .append("', 'id': ''")
//                        .append("}");
//            }
//            if (i != prizeList.size() - 1) {
//                prizeNameSb.append(", ");
//            }
//
//        }
//        prizeNameSb.append("]");
//        modifyContent.put("%prize", prizeNameSb.toString());
//        // 活动说明
//        String explain = actiApply.getExplain();
//        modifyContent.put("%explain", explain.replaceAll("\r\n", "</br>"));
//        // 抽奖次数
//        modifyContent.put("%drawNumShow", actiApply.getDrawNumShow().toString());
//        modifyContent.put("%drawTimes", "1");
//        // 参与人数
//        modifyContent.put("%npartShow", actiApply.getNpartShow().toString());
//        modifyContent.put("%npartNum", actiApply.getNpart() + "");
//        // 切线
//        modifyContent.put("%cutline", actiApply.getCutline());
//        // 读取模板文件
//        String h5ModelPath = root + "/webpage/modules/oschemeforn/preview/model/" + tempId;
//        String h5TempModelPath = root + "/webpage/modules/oschemeforn/preview/temp/" + tempId + "/" + actiId;
//        File h5TempModelDir = new File(h5TempModelPath);
//        h5TempModelDir.mkdirs();
//        File h5ModelDir = new File(h5ModelPath);
//        File[] h5Models = h5ModelDir.listFiles();
//        StringBuilder modelSb = new StringBuilder();
//        if (null != h5Models) {
//            for (File model : h5Models) {
//                if (!Global.HTML_MODEL_NAME.equals(model.getName())) {
//                    try {
//                        FileUtils.copyFile(model, new File(h5TempModelPath + "/" + model.getName()));
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                } else {
//                    BufferedReader br = null;
//                    FileWriter fw = null;
//                    try {
//                        br = new BufferedReader(new FileReader(model));
//                        String line;
//                        while ((line = br.readLine()) != null) {
//                            for (String sign : modifyContent.keySet()) {
//                                if (line.contains(sign)) {
//                                    line = line.replaceAll(sign, modifyContent.get(sign));
//                                }
//                            }
//                            modelSb.append(line).append("\r\n");
//                        }
//                        br.close();
//                        File tempModel = new File(h5TempModelPath + "/" + model.getName());
//                        fw = new FileWriter(tempModel);
//                        fw.write(modelSb.toString());
//                        fw.flush();
//                        fw.close();
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    } finally {
//                        if (null != br) {
//                            try {
//                                br.close();
//                            } catch (IOException e) {
//                                e.printStackTrace();
//                            }
//                        }
//                        if (null != fw) {
//                            try {
//                                fw.close();
//                            } catch (IOException e) {
//                                e.printStackTrace();
//                            }
//                        }
//                    }
//                }
//            }
//        }
//        // 正式
//        result.put("url", "/csopen/webpage/modules/oschemeforn/preview/temp/" + tempId + "/" + actiId + "/" + Global.HTML_MODEL_NAME);
//        // 测试
////        result.put("url", "/modules/oschemeforn/preview/temp/" + tempId + "/" + actiId + "/index");
//
//        result.put("pics", picConfigs);


        return null;
    }
}
